﻿using System;
using System.Collections.Generic;

namespace Poly2Tri
{
	// Token: 0x02000403 RID: 1027
	public abstract class TriangulationContext
	{
		// Token: 0x17000417 RID: 1047
		// (get) Token: 0x06001CA5 RID: 7333 RVA: 0x000B31F7 File Offset: 0x000B13F7
		// (set) Token: 0x06001CA6 RID: 7334 RVA: 0x000B31FF File Offset: 0x000B13FF
		public TriangulationDebugContext DebugContext { get; protected set; }

		// Token: 0x17000418 RID: 1048
		// (get) Token: 0x06001CA7 RID: 7335 RVA: 0x000B3208 File Offset: 0x000B1408
		// (set) Token: 0x06001CA8 RID: 7336 RVA: 0x000B3210 File Offset: 0x000B1410
		public TriangulationMode TriangulationMode { get; protected set; }

		// Token: 0x17000419 RID: 1049
		// (get) Token: 0x06001CA9 RID: 7337 RVA: 0x000B3219 File Offset: 0x000B1419
		// (set) Token: 0x06001CAA RID: 7338 RVA: 0x000B3221 File Offset: 0x000B1421
		public ITriangulatable Triangulatable { get; private set; }

		// Token: 0x1700041A RID: 1050
		// (get) Token: 0x06001CAB RID: 7339 RVA: 0x000B322A File Offset: 0x000B142A
		// (set) Token: 0x06001CAC RID: 7340 RVA: 0x000B3232 File Offset: 0x000B1432
		public int StepCount { get; private set; }

		// Token: 0x06001CAD RID: 7341 RVA: 0x000B323B File Offset: 0x000B143B
		public void Done()
		{
			this.StepCount++;
		}

		// Token: 0x1700041B RID: 1051
		// (get) Token: 0x06001CAE RID: 7342
		public abstract TriangulationAlgorithm Algorithm { get; }

		// Token: 0x06001CAF RID: 7343 RVA: 0x000B324B File Offset: 0x000B144B
		public virtual void PrepareTriangulation(ITriangulatable t)
		{
			this.Triangulatable = t;
			this.TriangulationMode = t.TriangulationMode;
			t.Prepare(this);
		}

		// Token: 0x06001CB0 RID: 7344
		public abstract TriangulationConstraint NewConstraint(TriangulationPoint a, TriangulationPoint b);

		// Token: 0x06001CB1 RID: 7345 RVA: 0x00002973 File Offset: 0x00000B73
		public void Update(string message)
		{
		}

		// Token: 0x06001CB2 RID: 7346 RVA: 0x000B3267 File Offset: 0x000B1467
		public virtual void Clear()
		{
			this.Points.Clear();
			if (this.DebugContext != null)
			{
				this.DebugContext.Clear();
			}
			this.StepCount = 0;
		}

		// Token: 0x1700041C RID: 1052
		// (get) Token: 0x06001CB3 RID: 7347 RVA: 0x000B3291 File Offset: 0x000B1491
		// (set) Token: 0x06001CB4 RID: 7348 RVA: 0x000B3299 File Offset: 0x000B1499
		public virtual bool IsDebugEnabled { get; protected set; }

		// Token: 0x1700041D RID: 1053
		// (get) Token: 0x06001CB5 RID: 7349 RVA: 0x000B32A2 File Offset: 0x000B14A2
		public DTSweepDebugContext DTDebugContext
		{
			get
			{
				return this.DebugContext as DTSweepDebugContext;
			}
		}

		// Token: 0x04001D9D RID: 7581
		public readonly List<DelaunayTriangle> Triangles = new List<DelaunayTriangle>();

		// Token: 0x04001D9E RID: 7582
		public readonly List<TriangulationPoint> Points = new List<TriangulationPoint>(200);
	}
}
